Peripolos = {};

// Στο αντικείμενο "ergasia" περιέχονται οι θεσμοθετημένες εργασίες
// ελέγχου. Κάθε εργασία έχει τη δική της περίοδο ελέγχου και τη μέθοδο
// ελέγχου ως function.

Peripolos.ergasia = {
/*
	feredata: { period: 10000, action: Service.feredata.check },
	sinedria: { period: 21000, action: Service.sinedria.check },
	pektis: { period: 3600000, action: Service.pektis.check },
*/
	dbconn: { period: 12000, action: DB.check },
};

//Peripolos.ergasia.sinedria.period = 99999999;

// Η μέθοδος "setup" στήνει τους βασικούς κύκλους ελέγχου.

Peripolos.setup = function() {
	Log.print('Calculating session timeouts');
	Log.level.push();
	Service.feredata.timeout = 2 * parseInt(Peripolos.ergasia.feredata.period / 1000) - 1;
	Log.print('timeout for "feredata" set to ' + Service.feredata.timeout + ' seconds');
	Service.sinedria.timeout = Service.feredata.timeout + parseInt(Peripolos.ergasia.feredata.period / 1000) - 1;
	Log.print('timeout for "sinedria" set to ' + Service.sinedria.timeout + ' seconds');
	Log.level.pop();

	Log.print('initializing patrol jobs');
	Log.level.push();
	for (var i in Peripolos.ergasia) {
		Log.print('initializing "' + i + '" check (every ' + Peripolos.ergasia[i].period + ' ms)');
		setInterval(Peripolos.ergasia[i].action, Peripolos.ergasia[i].period);
	}
	Log.level.pop();
}
